git基础网站:https://www.runoob.com/git/git-tutorial.html
git clone
(首次下载代码)
我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。
如果我们需要克隆到指定的目录,可以使用以下命令格式:
git clone <repo> <directory>
git fetch/pull
(类似于svn update), 更新本地代码
pull会meger代码,可能会存在冲突,fetch是不会merger代码的
git add/rm
git rm -f textgit.txt
git add textgit.txt
git log 按q退出,log查看
git checkout: //https://www.softwhy.com/article-8498-1.html, 切换分支:$ git checkout master
作用综述如下:
(1).切换或者新建分支。
(2).将暂存区或者指定commit内容覆盖到工作区。
$ git checkout -b newBr2//建新分支且切换到新分支
Git 工作区、暂存区和版本库
https://www.runoob.com/git/git-workspace-index-repo.html
配置
git 的设置使用 git config 命令。
显示当前的 git 配置信息:
$ git config --list
credential.helper=osxkeychain
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true编辑 git 配置文件:
$ git config -e # 针对当前仓库
或者:
$ git config -e --global # 针对系统上所有仓库
设置提交代码时的用户信息:
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com
如果去掉 --global 参数只对当前仓库有效。
分支:
查看所有(本地+远程)分支:git branch -a, 查看所有远程分支:git branch -r
如果我们要手动创建一个分支。执行 git branch (branchname) 即可。
$ git branch testing
如果需要创建分支且切换到新分支则:$ git checkout -b newtest
$ git branch ---->查看当前所属分支,切换分支使用命令:git checkout branchname
* master
testing
删除分支
git branch -d newtest
提交代码
$ git add file1 file2 ...
$ git commit -m 'removed test.txt、add runoob.php' <--(提交信息)
$ git push
查看指定文件的修改记录可以使用
git blame 命令/git blame <file>
恢复删除的文件
git checkout build.sh
git如何新建分支:
1) 切换到基础分支,如主干
git checkout dev/st_refactor
2)创建并切换到新分支
git checkout -b dev/st_net
git branch可以看到已经在panda分支上
更新分支代码并提交
git add *
git commit -m "create new branch dev/st_net"
git push origin dev/st_net
4)在git代码管理界面经可以看到panda分支了,成功~~
git 合并本地代码到分支
本地代码合并到dev分支
在local分支提交
git add .
git commit -m "playbuy"
切换到dev分支
git checkout dev
git pull
合并分支
git merge local (dev合并到hf分支的话,需要加-noff参数,就是禁止先来先合并策略,也不需要下一步骤git rebase,因为dev和hf属于线上版本,需要保留空的merge版本以知晓合并的节点,而local的则 不需要保留)
git rebase 移除merge空版本
git push origin dev
开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支
git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master 如果出现错误"error: failed to push some refs to", 则:
使用如下命令:git pull --rebase origin master
然后再进行上传: git push -u origin master
当master代码改动了,需要更新开发分支(dev)上的代码
git checkout master
git pull
git checkout dev
git merge master
git push -u origin dev
git删除文件夹
git rm 要删除的文件夹 -r -f
git commit -m 'del config'
git push
Git 笔记
git基础网站:https://www.runoob.com/git/git-tutorial.html
git clone(首次下载代码)
我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。
如果我们需要克隆到指定的目录,可以使用以下命令格式:
git clone <repo> <directory>
拉dev/st_refactor分支代码:
git clone https://address -b "branch name"
git fetch/pull/(类似于svn update), 更新本地代码
git add/rm
git rm -f textgit.txt
git add textgit.txt
git log 按q退出,log查看
git checkout: //https://www.softwhy.com/article-8498-1.html, 切换分支:$ git checkout master
作用综述如下:
(1).切换或者新建分支。
(2).将暂存区或者指定commit内容覆盖到工作区。
$ git checkout -b newBr2//建新分支且切换到新分支
Git 工作区、暂存区和版本库
https://www.runoob.com/git/git-workspace-index-repo.html
配置
git 的设置使用 git config 命令。
显示当前的 git 配置信息:
$ git config --list
credential.helper=osxkeychain
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true编辑 git 配置文件:
$ git config -e # 针对当前仓库
或者:
$ git config -e --global # 针对系统上所有仓库
设置提交代码时的用户信息:
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com
如果去掉 --global 参数只对当前仓库有效。
分支:
查看所有(本地+远程)分支:git branch -a, 查看所有远程分支:git branch -r
如果我们要手动创建一个分支。执行 git branch (branchname) 即可。
$ git branch testing
如果需要创建分支且切换到新分支则:$ git checkout -b newtest
$ git branch ---->查看当前所属分支,切换分支使用命令:git checkout branchname
* master
testing
删除分支:$ git branch -d newtest
提交代码:
$ git add file1 file2 …
$ git commit -m ‘removed test.txt、add runoob.php’ <–(提交信息)
$ git push
查看指定文件的修改记录可以使用
git blame 命令/git blame
恢复删除的文件:
git checkout build.sh
git如何新建分支:
1) 切换到基础分支,如主干
git checkout branch_name
2)创建并切换到新分支
git checkout -b branch_name
git branch可以看到已经在panda分支上
3)更新分支代码并提交
git add *
git commit -m "discription"
git push origin branch_name
4)在git代码管理界面经可以看到panda分支了,成功~~
git 合并本地代码到分支
本地代码合并到dev分支
在local分支提交
git add .
git commit -m “playbuy”
切换到dev分支
git checkout dev
git pull
合并分支
git merge local (dev合并到hf分支的话,需要加-noff参数,就是禁止先来先合并策略,也不需要下一步骤git rebase,因为dev和hf属于线上版本,需要保留空的merge版本以知晓合并的节点,而local的则 不需要保留)
git rebase 移除merge空版本
git push origin dev
开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支
git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master 如果出现错误"error: failed to push some refs to", 则:
使用如下命令:git pull --rebase origin master
然后再进行上传: git push -u origin master
当master代码改动了,需要更新开发分支(dev)上的代码
git checkout master
git pull
git checkout dev
git merge master
git push -u origin dev
git删除文件夹
git rm 要删除的文件夹 -r -f
git commit -m ‘del config’
git push
git 删除本地分支和删除远程分支:
具体操作:
我现在在dev20181018分支上,想删除dev20181018分支
1 先切换到别的分支: git checkout dev20180927
2 删除本地分支: git branch -d dev20181018
3 如果删除不了可以强制删除,git branch -D dev20181018
(发生错误:error: Cannot delete branch ‘xxxx’ checked out at ‘/home/yuyixiong/xxx/xx/xxx’
原因:此错误是在git删除分支时报的错误,删除分支时,当前分支不能停留在要删除的分支上,要切换到其他任意分支,再去删除目标分支)
4 有必要的情况下,删除远程分支(慎用):git push origin --delete dev20181018
5 在从公用的仓库fetch代码:git fetch origin dev20181018:dev20181018
6 然后切换分支即可:git checkout dev20181018
注:上述操作是删除个人本地和个人远程分支,如果只删除个人本地,请忽略第4步
Git 之 恢复修改的文件 //https://www.cnblogs.com/liuq/p/9203087.html
对于恢复修改的文件,就是将文件从仓库中拉到本地工作区,即 仓库区 ----> 暂存区 ----> 工作区。
**对于修改的文件有两种情况**:
只是修改了文件,没有任何 git 操作
修改了文件,并提交到暂存区(即编辑之后,gitadd但没有 git commit -m ....)
修改了文件,并提交到仓库区(即编辑之后,gitadd和 git commit -m ....)
情况I:
只是修改了文件,没有任何 git 操作,直接一个命令就可回退:
$ git checkout -- aaa.txt # aaa.txt为文件名
情况II:
修改了文件,并提交到暂存区(即编辑之后,gitadd但没有 git commit -m ....)
$ git log --oneline # 可以省略
$ git reset HEAD # 回退到当前版本
$ git checkout -- aaa.txt # aaa.txt为文件名
情况III:
修改了文件,并提交到仓库区(即编辑之后,gitadd和 git commit -m ....)
$ git log --oneline # 可以省略
$ git reset HEAD^ # 回退到上一个版本
$ git checkout -- aaa.txt # aaa.txt为文件名
Git重写历史 :https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2
存密码到硬盘一条命令就可以
$ git config credential.helper store
git add 添加文件
这样的错误是由于, 有的时候 可能
git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件
git add 如果添加了错误的文件的话
git add 撤销操作
git status 先看一下add 中的文件
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.java 就是对某个文件进行撤销了
放弃本地修改
Please, commit your changes or stash them before you can merge //Your local changes to the following files would be overwritten by merge
git reset --hard
git pull
git删除本地所有的更改
git reset --hard
git clean -xdf
git pull更新错误解决办法 : The following untracked working tree files would be overwritten by merge: 问题解决
拉取代码时报错:error: The following untracked working tree files would be overwritten by merge
先使用命令:git clean -f 删除本地已存在的同名文件,然后再次 git pull
git clean -f -n:查看会删除哪些文件
git clean -f:删除上一条命令显示出来的文件
git clean -fd:删除文件夹
git clean -fX:删除已被忽略的文件
git clean -fx:删除已被忽略和未被忽略的文件
git基于commit创建分支
git log,找到对应的commit log
git checkout 141c517d5f94c17b077(commit id)
git checkout -b +你想要创建的分支
git push origin 分支名
git 回退到某个commit
回退命令:
$ git reset --hard HEAD^ 回退到上个版本
$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard commit_id 退到/进到 指定commit的sha码
强推到远程:
$ git push origin HEAD --force
remote: The project you were looking for could not be found
问题原因解析:
因为自己的项目不止一个 又有自动保存git密码的功能,当clone第二个项目的时候就报了错误!
解决方案:
在自己的项目路径上加上自己的用户名,
例如:
Git clone http://10.9.100.1:0000/credit/code/xiangmu.git (失败)
Git clone http://用户名@10.9.100.1:0000/credit/code/xiangmu.git(成功)
这样会在克隆的时候提示输入密码,确认用户!就可以正常更新上游仓库了!
Git一次性设置用户名密码
git config --global credential.helper store
git config --global user.email “你的邮箱”
git config --global user.name “你的github/gitLab用户名”
git push / git pull 这里的主要目的是唤醒用户名、密码输入窗口
输入你的用户名、密码,这时候已经系统已经将你的用户名密码全局保存,以后就不必再输入了。
git stash
1 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。
2 由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。
总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。