Git上传Github及基本操作

git config --global user.name "github’s Name"
git config --global user.email "[email protected]"
git config --list

隔段时间传一次GitHub,总忘记怎么传的,现在总结一下:

cd ~/ #repo. name
git init
git add .
git commit -m 'remarks'
git remote add origin url.git
git pull --rebase origin master
git push -u origin master

mac查看.git目录:

defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder

更新仓库

1.使用强制push的方法:

git push -u origin master -f

这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。

2.push前先将远程repository修改pull下来

git pull origin master

git push -u origin master

3.若不想merge远程和本地修改,可以先创建新的分支:

git branch [name]

然后push

git push -u origin [name]

 

有时候会遇到要上传空文件夹到远程服务器的情况,在这里我提供了将空文件夹上传到github仓库中的方法的完美方案(创建无关文件,删除无关文件)。众所周知,git仅仅跟踪文件的变动,不跟踪目录。

方法:先在目录下的所有空文件夹下,创建一个无关文件(.gitxxx文件)。

在项目的根目录下输入命令行(用Git Bash Here打开),

find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec touch {}/.gitxxx \;


这样,在目录下的所有空文件夹下,就有.gitxxx文件了。此时,你可以上传此项目到远程服务器了,相信大家还有一个困惑,空文件夹下的.gitxxx文件,并不是我们 想看到的,所有在开发到一定阶段时,我们可以通过命令行删除所有的.gitxxx文件(无关文件)
删除当前目录下的.gitxxx文件

find ./ -type f -name '.gitxxx' -delete


这样,你就可以把目录下的所有.gitxxx文件删除了。
 

Pull request:

Pull Request 是开发者使用 GitHub 进行协作的利器。这个功能为用户提供了友好的页面,让提议的更改在并入官方项目之前,可以得到充分的讨论。

最简单地来说,Pull Request 是一种机制,让开发者告诉项目成员一个功能已经完成。一旦 feature 分支开发完毕,
开发者使用 GitHub 账号提交一个 Pull Request。它告诉所有参与者,他们需要审查代码,并将代码并入 master 分支。
Pull Request 不只是一个通知,还是一个专注于某个提议功能的讨论版

Pull Request是如何工作的

Pull Request 需要两个不同的分支或是两个不同的仓库,

  1. 开发者在他们的本地仓库中为某个功能创建一个专门的分支。
  2. 开发者将分支推送到公共的 GitHub 仓库。
  3. 开发者用 GitHub 发起一个 Pull Request。
  4. 其余的团队成员审查代码,讨论并且做出修改。
  5. 项目维护者将这个功能并入官方的仓库,然后关闭这个 Pull Request。

例子

如何将 Pull Request 用在 Fork 工作流中。小团队中的开发和向一个开源项目贡献代码都可以这样做。

Mary 是一位开发者,John 是项目的维护者。他们都有自己公开的 GitHub 仓库,
John 的仓库之一便是下面的官方项目。


为了参与这个项目,Mary 首先要做的是 fork 属于 John 的 GitHub 仓库。她需要注册登录 GitHub,找到 John 的仓库,点击 Fork 按钮。

选好 fork 的目标位置之后,她在服务端就有了一个项目的副本.

接下来,Mary 需要将她刚刚 fork 的 GitHub 仓库克隆下来.她在本地会有一份项目的副本。她需要运行下面这个命令:

git clone https://github.com/user/repo.git

请记住,git clone 自动创建了一个名为 origin 的远端连接,指向 Mary 所 fork 的仓库。

在她写任何代码之前,Mary 需要为这个功能创建一个新的分支。这个分支将是她随后发起 Pull Request 时要用到的源分支

# 创建新分支
git checkout -b some-feature
# 编辑一些代码
git commit -a -m "新功能的一些草稿"
#切换分支
git checkout ----

为了完成这个新功能,Mary 想创建多少个提交都可以。如果 feature 分支的历史有些乱,她可以使用交互式的 rebase 来移除或者拼接不必要的提交。对于大项目来说,清理 feature 的项目历史使得项目维护者更容易看清楚 Pull Request 的所处的进展。

在功能完成后,Mary 使用简单的 git push 将 feature 分支推送到了她自己的 GitHub 仓库上(不是官方的仓库):

git push origin some-branch

这样她的更改就可以被项目维护者看到了(或者任何有权限的协作者)。

Mary创建了一个Pull Request


GitHub 上已经有了她的 feature 分支之后,Mary 可以找到被她 fork 的仓库,点击项目简介下的 New Pull Request 按钮,用她的 GitHub 账号创建一个 Pull Request。Mary 的仓库会被默认设置为源仓库(head fork),询问她指定源分支(compare)、目标仓库(base fork)和目标分支(base)。

Mary 想要将她的功能并入主代码库,所以源分支就是她的 feature 分支,目标仓库就是 John 的公开仓库,目标分支为 master。她还需要提供一个 Pull Request 的标题和简介。


在她创建了 Pull Request 之后,GitHub 会给 John 发送一条通知。

John审查了这个Pull Request


John 可以在他自己的 GitHub 仓库下的 Pull Request 选项卡中看到所有的 Pull Request。点击 Mary 的 Pull Request 会显示这个 Pull Request 的简介、feature 分支的提交历史,以及包含的更改。

如果他认为 feature 分支已经可以合并了,他只需点击 Merge Pull Request 按钮来通过这个 Pull Request,将 Mary 的 feature分支并入他的 master 分支.
但是,在这里例子中,假设 John 发现了 Mary 代码中的一个小 bug,需要她在合并前修复。他可以评论整个 Pull Request,也可以评论 feature 分支中某个特定的提交。

为了修复错误,Mary 在她的 feature 分支后面添加了另一个提交,并将它推送到了她的 GitHub 仓库,就像她之前做的一样。这个提交被自动添加到原来的 Pull Request 后面,John 可以在他的评论下方再次审查这些修改。

John 接受了 Pull Request

最后,John 接受了这些修改,将 feature 分支并入了 master 分支,关闭了这个 Pull Request。功能现在已经整合到了项目中,其他在 master 分支上工作的开发者可以使用标准的 git pull 命令将这些修改拉取到自己的本地仓库。

 

更新fork的repo.

 

准备工作

原始repo:http://git-server/YCODE_DOMIN/test.git
fork过来的repo: http://git-server/guqiang/test.git

开始

  1. git clone http://git-server/guqiang/test.git将自己的repo克隆到本地。
  2. cd test进入工作目录
  3. git remote add upstream http://git-server/YCODE_DOMIN/test.git添加远端原始repo

原始repo做了更改,本地做了更改并且commit

  1. git fetch upstream然后,git rebase upstream/master
  2. git push origin master将所有更新推到自己的远端repo

注意

在同步原始远端repo的时候,如果本地有未commit或者stash的,需要先commit或者stash,不然git会提示你让你这么做。

Paste_Image.png

总的来说

三个命令:

  • git remote add upstream "原始repo"
  • git fetch upstream
  • git rebase upstream/master

清理历史

1.Checkout

   git checkout --orphan latest_branch

2. Add all the files

   git add -A

3. Commit the changes

   git commit -am "commit message"


4. Delete the branch

   git branch -D master

5.Rename the current branch to master

   git branch -m master

6.Finally, force update your repository

   git push -f origin master

常用操作

#查看分支
git branch
#查看status
git status
#查看修改内容
git diff
#查看修改历史
git log
#转到master
git checkout master
#merge 分支
git merge mybranch
#删除 mybranch分支
git branch -d mybranch //删除mybranch

.gitignore规则不生效的解决办法

把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章