最近不知为什么git desktop崩了,遂重新使用命令行,总结一下git的相关命令。

本地库管理

  1. 切换到工作目录

  2. 将文件xxx(也可以添加文件夹)添加到仓库
    git add xxx

  3. 将文件提交到仓库
    git commit -m "关于此次commit的描述"

  4. 查看当前状态
    git status

  5. 查看修改内容
    git diff

  6. 查看更新日志

    git log

新建远程库

  1. 在github上创建仓库
  2. 在本地创建文件夹作为本地仓库,在文件夹下使用命令行
    git init,使本地文件夹成为仓库
  3. 切换到工作目录并与本地的库关联
    git remote add origin git@github.com:michaelliao/learngit.git
  4. git pull origin branchxx将远程仓库branchxx的内容下拉到本地库,branchxx一般是master或者main,在github网站的远程仓库页面可以找到
  5. 把本地库的内容推到远程库上(之后可以不用写-u)
    git push -u origin master

分支

当使用github协同工作,使用分支可以使工作更加整洁。

切分支开发

git的分支可以看作指向当前结点的指针,HEAD指针始终指向文件的最新的地方。

分支的创建:git branch branch1

分支的切换:git checkout branch1

分支切换意味着,如果在该分支上产生的所有改动add或commit都将是在该分支下。

分支的合并

一、本地多个不同分支的合并

本地有多个分支时,在branch1分支下,使用git merge branch2就会将branch2合并到branch1分支。

二、远程分支和本地分支的合并

git pull拉取远程分之后直接与本地分支进行合并,其作用相当于git fetchgit merge

但是远程和本地合并时较长涉及到一致性的问题。

1.如果本地分支已有未提交的修改,此时又需要pull,可使用如下命令:

1)用git add将需要隐藏的文件保存在暂存区

2)隐藏本地分支工作:git stash save "message"

3)执行git pull命令,将远程分支下拉下来,此时不会出现冲突情况

4)使用git stash list可查看有哪些stash。使用git stash show stash@{num}可以看到第num-1个stash了存储了那些内容,默认是0号存储。

5) 若要恢复原来的文件,可使用git stash pop命令恢复。该命令会将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash。

6)若隐藏的文件可丢弃,则可使用git stash drop stash@{$num}丢弃该文件的内容。

注意,使用git stash后,暂存区的所有文件都会被隐藏,意味着如果再次进行git add 暂存区是不会有东西的,使用git commit也是无法提交更新的,只有恢复后才能解除文件的隐藏。

三、某个分支的diverged

当出现了Your branch and origin/master have diverged,and have...different commits each respectively

此时可使用git rebase origin/master将分叉的分支重新合并。