主要来源于廖雪峰Git教程: https://www.liaoxuefeng.com/wiki/896043488029600
Git常用操作总结
将本地文件添加到本地版本库
git init
git add file
git status
查看当前状态git commit -m "add a file"
版本回退
-
整体回退到历史提交版本
每次
commit
之后都会有对应的commit_id
(一串数字, 为哈希值), 用git log
或者git reflog
可以查看提交的历史信息.用
git reset --hard commit_id
就可以回到对应的版本git reset file
只是把文件从暂存库里取出来, 即取消掉git add file
git reset --soft HEAD^
撤销commit
-
丢弃工作区某个文件的修改
-
git checkout -- file
: 回退到之前add
或commit
的版本 (非常危险, 工作区的就再也找不回来了, 慎用) -
git checkout commit_id file
: 只回退某个文件到历史commit_id
对应的版本
-
分支管理
-
在当前分支上创建并切换到新的分支(不加
-b
就只是切换)git checkout -b new_branch
-
本地改了一半,还没commit,想要切换分支:
先
git stash
暂存一下再切换, 在另外一个分支修改完切换回来以后再git stash pop
或git stash apply
恢复之前工作, 前者把stash
的清掉了, 后者还在
-
-
合并分支: 将其他分支
merge
到当前分支git merge branch_name
有冲突的时候会用
>>>>>>>
,======
,<<<<<<<
标识出不同分支的内容, 手动更改到想要的版本以后, 用git add revised_file
,git commit -m "merge from branch branch_name"
来添加到版本库中(使得两者保持对应) -
把其他分支上的修改内容copy过来
git cherry-pick commit_id
-
删除分支
git branch -d branch_name
-
分支太乱, 整理整理
git rebase
和远程仓库连接
-
本地无仓库, 远程有仓库
git clone git@github.com:remote_repository.git
-
本地有仓库, 远程有仓库, 将本地仓库与远程仓库关联:
git remote add origin git@github.com:remote_repository.git
,origin
是对远程仓库起的别名, 一个本地仓库可以关联多个远程仓库, 即每个远程仓库都对应一个别名. -
本地和远程仓库已经关联了, 分支没对应:
-
在远程新建一个和本地一样的分支并关联(
-u
)git push -u origin branch_name
,master
是本地仓库的默认分支, 可以通过git branch
查看, 当前分支前有*
-
在本地新建一个和远程一样的分支并关联(
-t
)git checkout -t origin/branch_name
,origin
代表远程仓库
-
-
本地和远程分支都对应好了,本地想要提交, 而远程的超前了本地的版本
-
扔掉本地的,以远程为主:
git checkout -- file
或git restore file
-
合并一下:
git merge
和之前一样解决冲突,在解决完以后git add file
,git commit -m "merge file"
,git push
三连, 保持本地和远程对应
-
-
删除与远程库的连接
git remote rm origin
其他
-
git diff branch_name -- <file_name>
命令查看工作区和版本库里面最新版本的区别 -
git add -f file
强行add
, 忽略.gitignore
的忽略 -
标签相关
git tag -a <tagname> -m "explanation" commit_id
给commit_id
位置打标签及添加注释git tag v1.0 commit_id
给commit_id
打标签, 如省略就是当前commit
位置git push origin v1.0
推送标签git push origin --tags
推送所有标签git tag -d v0.9
删除标签