https://learngitbranching.js.org/?locale=zh_CN
git init #初始化为git管理的仓库 目录中的.git 是Git来跟踪管理版本的
git add readme.md # 添加到暂存区 index 中
git commit -m '添加了readme文件' #提交至仓库
git branch newImage #创建新的分支
git checkout -b newImage #-b创建并切换checkout分支newImage 相当于 git branch newImage & git checkout newImage
# 有两个问题,代码有两个分支,每个分支上各有一个独有的提交。没有一个分支同时解决了这两个问题,因此需要通过合并两个分支。
git merge bugFix #把bugFix合并到当前分支 当前分支的父节点变为两个 本身和bugFix 包含了两个修改信息
git checkout bugFix & git merge main #把main分支合并到bugFix,现在两个分支都包含了代码库的所有修改
Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!(又一篇万字长文)https://mp.weixin.qq.com/s/2jnF3ycKVFe0HIroXG-tlw
Workspace:工作区
Index/Stage: 暂存区
Repository:仓库
Remote:远程仓库
命令git status
查看是否还有文件未提交
nothing to commin, working directory clean
修改readme.txt文件后,git status
告诉我们被修改但未提交的内容。
git diff readme.txt
查看readme文件的不同
继续修改readme.txt ,并添加提交。
git log
或 git log –pretty=oneline
,查看历史记录,后边会跟每次提交的版本号
git reflog
查看全部记录
git reset --hard 6bcfc1f
直接恢复到上一个版本
readme.txt文件里面增加一行 内容为555555555555,未提交之前,我发现添加5555555555555内容有误,需要恢复以前的版本。
git status
、git checkout -- readme.txt
可以丢弃工作区的修改 (把readme.txt文件在工作区做的修改全部撤销)
git checkout -- 的 -- 很重要,如果没有 -- 的话,那么命令变成创建分支了。
创建并提交了b.txt文件。这时在工作区删除了b.txt文件
若需要恢复b.txt文件,git checkout -- b.txt
ssh-keygen -t rsa -C “[email protected]”
登录github,setting 中的 SSH Keys 页面 add ssh keys :填写任意 titile 、 key文本框粘贴pub的内容、点击addkey
本地创建了一个git仓库后,又想在github上创建一个git仓库,并且希望两个仓库远程同步。
github上 create a new repo 创建一个新仓库。
git remote add origin https://github.com/***/***.git
添加链接关系
git push -u origin master
把本地仓库分支master内容推送到元仓库去 (由于远程库是空的,第一次推送master分支时,加上了 –u参数,)
第一次后不需要加 '-u',只要本地做了提交git commit
,就可以通过git push origin master
把本地master分支的最新修改推送到github上了
git checkout -b dev
创建并切换至dev分支,相当于git branch dev,git checkout dev
git branch
查看当前的分支,当前分支前有*号
在dev分支进行add、commit操作,不会影响 master 分支
git merge dev
在master分支上合并了dev的内容
git branch -d dev
合并完之后,可以删除dev分支
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout –b name
合并某分支到当前分支:git merge name
删除分支:git branch –d name
merge conflict in readme.txt
<<<HEAD是指主分支修改的内容,>>>>>dev 是指dev上修改的内容
将dev上的内容修改成与主分支相同的内容
git log
通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式
创建一个dev分支 git checkout -b dev
修改readme.txt内容
添加到暂存区 git add readme.txt
git commit -m 'test'
切换回主分支(master) git checkout master
合并dev分支,使用命令 git merge –no-ff -m “注释” dev git merge --no--ff -m 'test' dev
查看历史记录 git branch -d dev
比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。并不是我不想提交,而是工作进行到一半时候,我们还无法提交。
比如我这个dev要2天完成,但是我issue-404 bug需要5个小时内完成。怎么办呢?还好,Git还提供了一个stash功能,可以把当前工作现场 ”隐藏起来”,等以后恢复现场后继续工作。如下
git stash
将当前工作现场隐藏起来
git status
查看状态,没有任何变换
git checkout -b issue-404
创建并切换临时分支404 以解决bug
git add bug.txt & git commit -m 'fix bug'
解决bug并添加提交
git checkout master
切换到主分支
git merge --no--ff -m 'merge bug fix' issue-404
合并分支issue-404的内容
git branch -d issue-404
删除无用分支
git checkout dev
回到dev继续开发
git stash list
查看之前保存的工作现场
git stash pop
恢复同时把保存的工作现场删除 或者git stash apply
恢复并不删除
git submodule update --init --recursive --remote
当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。
要查看远程库的信息,使用 git remote
要查看远程库的详细信息,使用 git remote –v
推送分支就是把该分支上所有本地提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:使用命令 git push origin master
推送到其他分支,比如dev分支上,还是那个命令 git push origin dev
master分支是主分支,因此要时刻与远程同步。一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。
多人协作时,大家都会往master分支上推送各自的修改。现在我们可以模拟另外一个同事,可以在另一台电脑上(注意要把SSH key添加到github上)或者同一台电脑上另外一个目录克隆,新建一个目录名字叫testgit2
但是我首先要把dev分支也要推送到远程去,git push origin dev
接着进入testgit2目录,进行克隆远程的库到本地来
现在我们的小伙伴要在dev分支上做开发,就必须把远程的origin的dev分支到本地来,于是可以使用命令创建本地dev分支 git checkout -b dev origin/dev
现在小伙伴们就可以在dev分支上做开发git add
git commit
开发完成后,把现在的dev分支推送到远程去git push origin dev
小伙伴们已经向origin/dev分支上推送了提交,而我在我的目录文件下也对同样的文件同个地方作了修改,也试图推送到远程库时:
推送失败,因为我的小伙伴最新提交的和我试图推送的有冲突,解决的办法也很简单,上面已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送。
git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:如下
git branch --set-upstream dev origin/dev
git pull
修改后add、commit后
git push origin dev
因此:多人协作工作模式一般是这样的:
首先,可以试图用git push origin branch-name推送自己的修改. 如果推送失败,则因为远程分支比你的本地更新早,需要先用 git pull 试图合并。 如果合并有冲突,则需要解决冲突,并在本地提交。再用 git push origin branch-name 推送。
参考文章: Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!(又一篇万字长文)
git checkout master
git pull https://github.com/unknownue/PU-Flow.git
git push -u origin master
https://blog.csdn.net/ganquanzhong/article/details/103023081
创建仓库PointCloudDoc
git init
git add .
git commit -m "first commit"
git remote add origin [email protected]:DuanYaQi/E-NICE.git
git push -u origin master #-u 设置默认分支为master
git push origin :main
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch T_Temp.md' --prune-empty --tag-name-filter cat -- --all
##############################解释#################################
git filter-branch --index-filter 让每个提交的文件都复制到索引(.git/index)中
然后运行过滤器命令:git rm --cached --ignore-unmatch 文件名 ,让每个提交都删除掉“文件名”文件
然后--prune-empty 把空的提交“修剪”掉
然后--tag-name-filter cat 把每个tag保持原名字,指向修改后的对应提交
最后-- --all 将所有ref(包括branch、tag)都执行上面的重写
##############################解释#################################
git push origin --force --all
git push origin --force --tags
# 删除缓存下来的ref和git操作记录
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
#垃圾回收
git gc --prune=now
# 强推
git push --force
ssh-keygen -t rsa -C "[email protected]"
cat ~/.ssh/id_rsa.pub
1.本地创建一个本地仓库
2.关联远程端:
git remote add origin [email protected]:用户名/远程库名.git
3.同步远程仓库到本地
git pull
这个时候会报错
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
再按提示执行
git branch --set-upstream-to=origin/master master
继续报错
fatal: branch 'master' does not exist
原因:
本地仓没有在master上所以报错了
4.在本地仓切换到master,那么刚刚同步的文件就出来了
git checkout master
这里实际远程端的其他分支也同步了下来的了,但是 git branch 不会展示出来
直接 git checkout 分支名 就可以直接切过去了
git pull origin master --allow-unrelated-histories
git branch --set-upstream-to=origin/master master
git checkout master
git pull --rebase origin master
git push -u origin master
https://blog.csdn.net/downanddusk/article/details/88344389
该key被其他用户使用或被其他仓库使用
https://blog.csdn.net/m0_38072683/article/details/82939535
https://www.jianshu.com/p/f08efd596773
1.检查本地GIT的配置
git config user.name/git config --global user.name
git config user.email/git config --gloabl user.email
使用以上命令来检查本地的用户名和邮箱是否填写正确
2.检查远程仓库配置
git remote -v
如果远程仓库信息有误,则删除本地仓库配置,并且设置相关地址
git remote rm origin
git remote add origin XXXX
3.还是不行的话可以找到文件路径下 git 文件所在,打开 config 文件,删除[remote "origin"] 下信息。重复1,2步骤。
git push -u origin master -f
git config --global http.proxy 127.0.0.1:1080
//然后开全局代理push/pull
// 查看当前代理设置
git config --global http.proxy
git config --global https.proxy
// 设置当前代理为 http://127.0.0.1:1080 或 socket5://127.0.0.1:1080
git config --global http.proxy 'http://127.0.0.1:1080'
git config --global https.proxy 'http://127.0.0.1:1080'
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
// 删除 proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
git config --global http.sslVerify false
git config --global http.sslVerify false
取消代理 + git push
在docker下用代理
//8889是 v2rayN的http端口号
git config --global http.proxy 'http://127.0.0.1:8889'
git config --global https.proxy 'http://127.0.0.1:8889'
Recompile and install git solve it finally, the steps are the following:
sudo apt-get install build-essential fakeroot dpkg-dev -y
sudo apt-get build-dep git -y
sudo apt-get install libcurl4-openssl-dev -y
cd ~
mkdir source-git
cd source-git/
apt-get source git
cd git-2.*.*/
sed -i -- 's/libcurl4-gnutls-dev/libcurl4-openssl-dev/' ./debian/control
sed -i -- '/TEST\s*=\s*test/d' ./debian/rules
dpkg-buildpackage -rfakeroot -b -uc -us
sudo dpkg -i ../git_*ubuntu*.deb
比如现在你的repo地址是:
https: //http://github.com/xxx/xxx.github.io.git
[email protected]:xxx/xxx.github.io.git