廖雪峰 Git 教程
https://www.liaoxuefeng.com/wiki/896043488029600
基本操作
git init
git add
<filename
>
git commit -m
'描述信息'
git reflog
git status
回退版本
git reset --hard HEAD^
git reset --hard commit-id
撤销修改
git checkout -- 文件名
git reset HEAD 文件
删除文件
rm <file
>
git rm <file
>
git commit -m
"删除了某个文件"
git checkout --
<file
>
关联远程仓库
git remote add origin git@
...../gitlearn.git
git push -u origin master
git push origin master
git clone
分支管理
git checkout -b dev
git branch
git merge dev
git merge --no-ff -m
"merge with no-ff" dev
git branch -d dev
分支 解决冲突
合并分支的时候,两个分支都有新的提交,这时候会冲突
$
git merge feature1
Auto-merging readme.txt
CONFLICT
(content
): Merge conflict
in readme.txt
Automatic merge failed
; fix conflicts and
then commit the result.
我们需要手动的更改冲突文件,然后重新提交
冲突文件会如下,一个是当前我们的文件,一个是分支文件内容,自行更改就行。
<<<<<<< HEAD
Creating a new branch is quick
& simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
再提交
$
git add readme.txt
$
git commit -m
"conflict fixed"
修复bug
修复bug 会创建一个临时分支,修复完毕,切换到主分支合并bug分支。
如果开发分支有正在工作的代码,需要把任务暂停下来
git stash
git stash list
git stash pop
git checkout master
git checkout -b issue-101
git add readme.txt
git commit -m
"fix bug 101" --
> commit-id 4c805e2
git checkout master
git merge --no-ff -m
"merged bug fix 101" issue-101
git checkout dev
git stash pop
git branch
git cherry-pick 4c805e2
(dev环境下执行,因为dev也会存在这个bug
)
为新功能创建分支
git checkout -b feature-vulcan
git add vulcan.py
git commit -m
"add feature vulcan"
git checkout dev
git branch -d feature-vulcan
git branch -D feature-vulcan
多人协作
https://www.liaoxuefeng.com/wiki/896043488029600/900375748016320
git remote
git remote -v
git push origin master
git push origin dev
git clone
git checkout -b dev origin/dev
git pull
git branch --set-upstream-to
=origin/dev dev
git pull
git commit -m
"fix env conflict"
变基
https://www.liaoxuefeng.com/wiki/896043488029600/1216289527823648
标签
标签不会随着push代码而更新,需要单独推送,标签对应commit-id
git tag v1.0
git tag v0.9 f52c633
git tag
git show v0.9
git tag -a v0.1 -m
"version 0.1 released" 1094adb
git log --pretty
=oneline --abbrev-commit
git tag -d v0.1
git push origin :refs/tags/v0.9
git push origin v1.0
git push origin --tags
忽略特殊文件
.gitignore文件
https://www.liaoxuefeng.com/wiki/896043488029600/900004590234208
别名配置
git config --global alias.st status
第一次使用git仓库
$
git clone https://gitee.com/suntianwei/awsome-python.git
Cloning into
'awsome-python'...
warning: You appear to have cloned an empty repository.
Tian@HW-TIAN MINGW64 /e/project-work/python-work
$
git config --global user.name
"tiango"
Tian@HW-TIAN MINGW64 /e/project-work/python-work
$
git config --global user.email
"tiango@aliyun.com"
Tian@HW-TIAN MINGW64 /e/project-work/python-work
$
cd awsome-python/
Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python
(master
)
$
touch README.md
Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python
(master
)
$
git add README.md
Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python
(master
)
$
ls
README.md
Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python
(master
)
$
git commit -m
"first commit"
[master
(root-commit
) eb1ff92
] first commit
1
file changed, 0 insertions
(+
), 0 deletions
(-
)
create mode 100644 README.md
Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python
(master
)
$
git remote add origin https://gitee.com/suntianwei/awsome-python.git
fatal: remote origin already exists.
Tian@HW-TIAN MINGW64 /e/project-work/python-work/awsome-python
(master
)
$
git push -u origin master
libpng warning: iCCP: cHRM chunk does not match sRGB
Enumerating objects: 3, done.
Counting objects: 100%
(3/3
), done.
Writing objects: 100%
(3/3
), 206 bytes
| 206.00 KiB/s, done.
Total 3
(delta 0
), reused 0
(delta 0
), pack-reused 0
remote: Powered by GITEE.COM
[GNK-5.0
]
To https://gitee.com/suntianwei/awsome-python.git
*
[new branch
] master -
> master
Branch
'master' set up to track remote branch
'master' from
'origin'.