推荐在线学习git网站
常用操作
- 创建分支
- git branch 输入你想要创建的名字
- 切换分支
- git checkout 这时候一个Head的指针会指向name的分支
查看当前所处分支和各分支名
-
查看分支交叉情况
- git log --oneline --decorate --graph --all
-
删除分支
- git branch -D 这里D不大写会有提示
-
切换到想要合并到的分支,将目标分支合并进来
- git merge
- 查看每一个分支的最后一个提交
- git branch -v
- 查看哪些分支 已经/没有 合并到当前分支
- git branch --merged
- git branch --no-merged
仓库初始化
- 创建初始化文件
- git init
- 查看当前目录下文件状态
- git status (untracked unmodified modified staged暂存状态)
- git status 查看指定文件状态
- 添加所有修改文件到暂时
- git add .
- 提交暂存区中的内容到本地仓库 -m表示修改的信息
- git commit -m ‘输入修改的信息’
如何修改自己的代码库?
- 拷贝自己的代码
- git clone "link"
- 添加所有修改文件到暂时
- git add .
- 提交暂存区中的内容到本地仓库 -m表示修改的信息
- git commit -m ‘输入修改的信息’
- 第一次提交的话需要设置提交链接
- git remove set-url origin "https:代码库地址"
- 提交修改后的代码
- git push origin master
一些可能遇到的问题
如果你clone下来一个别人的仓库,在此基础上完成你的代码,推送到自己的仓库可能遇到如下问题:
error: remote origin already exists.表示远程仓库已存在。
因此你要进行以下操作:
1、先输入git remote rm origin 删除关联的origin的远程库。
2、关联自己的仓库 git remote add origin gitee.com/xxxxxx.git。
3、最后git push origin master,这样就推送到自己的仓库了,master根据自己所在的分支自己修改。
如何pull request?
1、首先fork代码库
2、进入到自己仓库下fork的代码库,找到clone链接,在自己的控制台输入链接
git clone 链接
3、查看当前仓库和哪些远程仓库建立了链接
git remote -v
你会发现只和自己fork的仓库代码有链接
4、与你想建立链接的代码建立链接
git remote add upstream
5、新建并切换到新建的分支
git checkout -b mybranch
6、作出自己的修改
比如新建文件PRTest;
7、提交
使用 git add PRTest ,git commit ,git push等系列命令提交到自己GitHub上的Repository
8、到自己的GitHub的Repository上点击Pull Requests,再点击New pull requests按钮;
如下图:
b.进入Comparing changes界面。
2.4.2 Create pull request
a.点击Create pull request按钮;
b.填写相关信息,在点击Create pull request按钮即可。
如何在多人协作的情况下使用git?
举个例子,当你在你的分支写代码的情况下,别人修改了master主干分支的代码,这时候你需要重新拉取最新的代码和你现在写的代码进行合并,怎么解决?
-
方法一:直接拉取远程代码。但是不推荐这样做,会和你自己的代码产生冲突,因为是直接合并的,⽆法提前处理冲突。虽然pull这种方式可以更新代码到本地,相当于fetch+merge,不过多人协作的话不够安全。
# 查看当前远程分⽀ $ git remote -v # 直接拉取远程分支最新代码并合并最新代码到本地当前分支 $ git pull origin master `**⽰例:拉取远端origin/master分⽀合并到本地当前分⽀**` -
方法二:git fetch + git merge:获取最新代码到本地,然后手动合并分支
# 查看当前远程的版本 $ git branch -v # 获取最新代码到本地临时分⽀(本地当前分⽀为[branch],获取的远端的分⽀为[origin/branch]) $ git fetch origin master:master1 `**⽰例:在本地建⽴master1临时分⽀,并下载远端的origin/master分⽀到master1临时分⽀中**` 以上命令的意思是:从远程的origin仓库的master分支下载最新版本代码到本地并新建一个分支master1中。 如果本地不存在master1分支, 则会自动创建一个新的master1分支; 如果本地存在master1分支, 并且是‘fast forward’, 则自动合并两个分支, 否则, 会阻止以上操作 # 查看版本差异 $ git diff master1 `**示例: 查看本地master1分支与当前分支的版本差异**` # 合并最新分支到本地分支 $ git merge master1 `**示例: 合并本地临时分支master1到当前分支**` # 删除本地临时分支 $ git branch -d master1 `**示例: 删除本地分支master1**` ps:如果master1分支没有成功合并到本地当前分支会报错,可以用以下命令强制删除 $ git branch -D master1 -
方法三:不新建额外的分支
# 查看当前远程的版本 $ git remote -v # 获取最新代码到本地(本当前地分支为[branch],获取的远端的分支[origin/branch]) $ git fetch origin master `**示例:获取远端的origin/master分支**` 以上命令的意思是:从远程的origin仓库的master分支下载代码到本地的master分支 # 查看版本差异 $ git log -p master..origin/master `**示例1:查看本地的master与远端的origin/master分支的版本差异**` # 合并最新代码到本地分支 $ git merge origin/master `**示例1:合并远端origin/master分支到当前分支**` `ps:注意git fetch origin与git fetch origin master 的区别` $ git fetch origin意思是获取远端的默认分支的最新代码,省略分支名代表获取的是默认分支的最新代码,也就是说,如果拉取远程仓库默认分支名最新代码到本地,则可以省略要fetch的分支名。 而$ git fetch origin master是设定当前分支的 FETCH_HEAD为远程仓库的master分支,属于明确了获取指定分支的最新代码。 注意: 在这种情况下, 不会在本地创建本地远程分支, 这是因为:这个操作是git pull origin master的第一步, 而对应的pull操作,并不会在本地创建新的branch。 另外,该命令还带来了一个附加效果,那就是:这个命令可以用来测试远程仓库的远程分支master是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出一个异常。