Git 笔记

学习资源

github开源工程 learnGitBranching,其网站在

1. fork

fork 的作用

fork 别人的库other’s/A,会在自己的space 派生出自己的库my/A,可以继续跟踪别人的库,同时自己可以修改并提交到my/A

fork后如何与源保持更新

首先,clone 自己的库 到自己的本地。

git clone URL(my/A)

然后,给本地库添加源(别人的库)

git remote add upstream URL

upstream:(随便起的名字)
URL: (other’s/A)

然后利用fetch和merge合并upstream的master分支:

git fetch upstream
git merge upstream/master

master: 分支名称,也可以是别的名字。
此时本地的master分支就更新至upstream的master版本。然后利用push将本地分支覆盖到git远程分支上:

git push origin master

origin :这是my/A在本地的别名,默认的,可以修改。other’s/A的别名就是前几步的upstream。

这就完成fork后保持对源项目的更新。

2. rename

git remote rename origin user

origin : 已有远程库在本地的名字
user:新名字

仓库地址

显示当前仓库地址

git remote show // 显示所有远程库源
git remote show origin // 显示远程库origin的URL

设置新的仓库地址

执行修改地址命令

git remote set-url origin URL // 将 origin 指向新的URL

3. 合并多个commit,只保留一个记录

转载自 git 多个commit合并成一个commit

应用场景:在分布式开发时,通常会有个人库和总库,个人平时的开发只提交到个人库,待功能开发完后再提交到总库。这时候把个人库的每次提交记录都送到总库是不必要的。这就需要先将个人的commit记录合并,然后再向总库合并。

rebase命令

举例转述:

例如你有ABCD四个记录,A是从总库分离时候的节点,BCD是个人库独有的记录,那么就需要把BCD合并成一个记录。
步骤:

  • rebase 到 A

git rebase -i commit_id(这里应该是A的版本号)

  • git rebase命令会要求你编写rebase 执行过程

pick 1e894df B’s commit log
squash 13fd690 C’s commit log
squash 6523dab D’s commit log

这里有pick ,squash 两个命令。pick表示使用此commit,squash表示将这个commit合并到前一个。
还有其他命令,可以删除commit等等。

保存后,rebase将从上到下执行rebase 设置。

  • 编写 log
    rebase完成后编写log,git 会把 BCD 的 log 都列出来供参考。

  • 保存后即完成

个人库merge到总库

当个人库提交后,总库也有提交时

git reset --hard trunk/hli_lib
git cherry-pick commit_id(个人库的提交)
git push -f

git fetch

remote branch update

git fetch --prune <remote name>

更新远端分支状态,包括删除、新建的分支。

换行符

因为windows,Linux换行符不同,会对git提交和检查造成困扰。
解决办法:可以不检查换行符,提交时转换为

常用命令

commit相关

对已经提交的commit做修改,步骤如下:

  1. git rebase -i commit_id~1
  2. 修改rebase规则:用pick 把commit_id 放在最后一行,保存
  3. 修改code,git add ., git commit --amend 即可。

查看log的几种方法

git log -n 查看最近n条commit
git log --grep=<key> 查看关键字为key的commit,关键字即log中[]包括的。

查看分支

git branch -vv 查看本地分支和对应的remote branch
git branch -a 显示本地和远程所有分支

git fetch --prune
git rebase <remote name>/<remote branch>
git push push 本地更新到远程对应的分支
git push <remote name> <local branch>:<remote branch> push 本地更新到远程的其他(<remote branch>)分支
git push -f 强制推送

stash

常用git stash命令:

(1)git stash save “save message” : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。

(2)git stash list :查看stash了哪些存储

(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}

(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p

(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}

(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}

(7)git stash drop stash@{KaTeX parse error: Expected 'EOF', got '}' at position 4: num}̲ :丢弃stash@{num}存储,从列表中删除这个存储

(8)git stash clear :删除所有缓存的stash

submodule

submodule dirty怎么办

重置:git submodule deinit
然后重新checkout: git submoudle init, git submodule update --init -r

untrack files

删除这些文件:git clean -f
删除文件夹:git clean -d -f

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值