Git笔记

引言

记录工作中常用到的git指令,参考廖雪峰的git教程。

1、git初始化

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

2、创建版本库

$ git init  # 把当前目录变成Git可以管理的仓库
$ git add readme.txt  # 把文件添加到仓库
$ git commit -m "wrote a readme file"  # 把文件提交到仓库

3、版本回退

$ git log  # 显示从最近到最远的提交日志
$ git reset --hard HEAD^  # 回退到上一个版本

上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

$ git reset --hard 3628164  # 根据commit id回滚,无须写全

如果要重返未来?用 reflog找到之前的commit id。

$ git reflog  # 查看每一次操作记录

4、工作区、暂存区

$ git status  # 查看当前状态

Git跟踪并管理的是修改,而非文件。

$ git diff HEAD -- readme.txt  # 查看工作区和版本库里面最新版本的区别

5、撤销修改

$ git checkout -- readme.txt  # 丢弃工作区的修改

这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。

$ git reset HEAD readme.txt  # 把暂存区的修改撤销掉(unstage),重新放回工作区

6、删除文件

$ rm test.txt  # 本地删除
$ git rm test.txt  # git删除

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是只能恢复文件到最新版本,会丢失最近一次提交后你修改的内容。

7、远程仓库

创建ssh:

$ ssh-keygen -t rsa -C "[email protected]"  # 创建ssh

关联远程仓库:

$ git remote add origin git@server-name:path/repo-name.git  # 关联远程仓库

推送本地更新:

$ git push -u origin master  # 第一次推送master分支的所有内容
$ git push origin master  # 后续推送最新修改

克隆远程仓库:

$ git clone [email protected]:path/repo-name.git  # 克隆远程仓库

8、分支管理

创建并切换分支:

$ git branch   # 创建分支
$ git checkout   # 切换分支
$ git checkout -b dev  # 创建并切换到分支dev,相当于上面两条命令

$ git branch  -a # 查看所有分支
$ git branch  # 查看当前分支

合并分支:

$ git merge dev

删除分支:

$ git branch -d dev

普通模式合并,能看到合并记录

$ git merge --no-ff -m "merge with no-ff" dev

保存与恢复现场:

$ git stash  # 保存现场
$ git stash list  # 查看stash记录
$ git stash pop  # 恢复现场,同时把stash内容也删了

多人协作:

  • 查看远程库信息,使用git remote -v
  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

最后附上一张神图:

Git cheat sheet

参考资料

[1] https://www.liaoxuefeng.com/
[2] https://git-scm.com/book/zh/v2

你可能感兴趣的:(Git笔记)