git config --global user.name "Firstname Lastname"
git config --global user.email "your_email@example.com"
复制代码
注意:
html
- 1.查看用户名和邮箱地址
$ git config user.name $ git config user.email 复制代码
- 2.修改全局用户名和邮箱地址
$ git config --global user.name "username" $ git config --global user.email "email" 复制代码
- 3.修改局部用户名和邮箱地址:
$ cd ~/you project $ git config user.name "username" $ git config user.email "email" 复制代码
- 4.windows 下修改git 登陆帐号密码[blog.csdn.net/qq_29298577…]
$ 第一步:控制面板 -----> 用户帐户 $ 第二步:用户帐户------> 管理windows凭据 $ 第三步:找到对应的地址修改登陆名称和密码便可 `` 复制代码
$ ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa): 按回车键
Enter passphrase (empty for no passphrase): 输入密码
Enter same passphrase again: 再次输入密码
复制代码
Your identification has been saved in /Users/your_user_directory/.ssh/id_rsa.
Your public key has been saved in /Users/your_user_directory/.ssh/id_rsa.pub.
The key fingerprint is:
fingerprint值 your_email@example.com
The key's randomart image is: +--[ RSA 2048]----+ | .+ + | | = o O . | 略 复制代码
id_rsa 文件是私有密钥,id_rsa.pub 是公开密钥。git
cd ~/.ssh
cat ~/.ssh/id_rsa.pub
;或者你也能够直接打开你用户(通常都是Administrator)下的.ssh文件夹,打开它里面的id_rsa.pub 文件。$ cat ~/.ssh/id_rsa.pub
ssh-rsa 公开密钥的内容 your_email@example.com
复制代码
若是经过上面的方式找不到公钥,你就须要先生成公钥了。github
$ ssh -T git@github.com
The authenticity of host 'github.com (207.97.227.239)' can't be established. RSA key fingerprint is fingerprint值 . Are you sure you want to continue connecting (yes/no)? 输入yes 复制代码
出现以下结果即为成功。web
Hi hirocastest! You've successfully authenticated, but GitHub does not provide shell access. 复制代码
$ git clone git@github.com:hirocastest/Hello-World.git
Cloning into 'Hello-World'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
$ cd Hello-World
复制代码
而后,就能够在本地开心的敲代码了~~shell
git init
初始化仓库 初始化仓库成功后,,.git
目录里存储着当前目录内容所需的仓库数据。 在Git中,包含.git
目录的内容称为”附属于该仓库的工做树“。文件的编辑等操做在工做树中进行,而后记录到仓库中,以此管理文件的历史快照。git status
查看仓库状态git add
向暂存区中添加文件 要想让文件成为Git仓库的管理对象,就须要用git add
命令将其加入暂存区。 暂存区是提交以前的一个临时区域。git commit
保存仓库的历史记录 git commit
命令能够将当前暂存区中的文件实际保存到仓库的历史记录中。经过这些记录,咱们就能够在工做树中复原文件。$ git commit -m "First commit"
复制代码
-m
,直接执行 git commit
命令。执行后编辑器就会启动,并显示以下结果。# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
复制代码
在编辑器中记述提交信息的格式以下vim
- 第一行:用一行文字简述提交的更改内容
- 第二行:空行
- 第三行之后:记述更改的缘由和详细内容
git log
查看提交日志$ git log --pretty=short
$ git log README.md
$ git log -p
$ git log -p README.md
复制代码
参数有不少,用到就去查一下。windows
git diff
git diff
命令能够查看工做书、暂存区、最新提交之间的差异。浏览器
执行 git diff
命令,查看当前工做树与暂存区的差异。 若是咱们还没有用git add
命令向暂存区添加任何东西,因此程序只会显示工做树与最新提交状态之间的差异,也就不会显示任何内容。安全
DELL@DESKTOP-L7RGC6H MINGW64 ~/Desktop/新建文件夹 (5) (master)
$ git diff
DELL@DESKTOP-L7RGC6H MINGW64 ~/Desktop/新建文件夹 (5) (master)
复制代码
要查看与最新提交的差异,请执行如下命令。bash
$ git diff HEAD
复制代码
不妨养成这样一个好习惯:在执行
git commit
命令以前先执行git diff HEAD
命令,查看本次提交与上次提交之间有什么差异,等确认完毕后再进行提交。当前,你最好用webstrome
或者其余可视化视图工具,更方便的查看。 这里的 HEAD 是指向当前分支中最新一次提交的指针。
git branch
-显示分支一览表git checkout -b
-建立并切换分支git merge
-分支合并合并分支时,加上--no-ff
参数git merge --no-ff master_dev1
,编辑器会启动,用于录入要提交的信息。
git log --graph
以图表的形式查看分支(webstronme有更丰富的操做)git reset
回溯历史版本要让仓库的HEAD、暂存区、当前工做树回溯到指定状态 。只有提供目标时间的哈希值,并使用git reset --hard
命令便可。
$ git reset --hard 47febf026b47194be1586a6457ed59987dbb333a
复制代码
git commit --amend
修改提交信息(就是git commit -m
时候的写的信息)要修改上一条提交信息,可使用git commit --amend
命令。 执行命令后,编辑器会启动,修改就是了。
git rebase -i
-压缩历史git remote add
-添加远程仓库使用git remote add
命令将其设置为本地仓库的远程仓库。
$ git remote add origin git@github.com:github-book/git-tutorial.git
复制代码
git push
推送至远程仓库将当前分支下本地仓库中的内容推送给远程仓库,须要用到git push
命令。
-u参数能够在推送的同时,将 origin 仓库的 master 分 支设置为本地仓库当前分支的 upstream(上游)。添加了这个参数,未来 运行 git pull命令从远程仓库获取内容时,本地仓库的这个分支就可 以直接从 origin 的 master 分支获取内容,省去了另外添加参数的麻烦。
除了 master 分支以外,远程仓库也能够建立其余分支。
$ git checkout -b feature-D
Switched to a new branch 'feature-D'
复制代码
如今将它 push 给远程仓库并保持分支名称不变。
$ git push -u origin feature-D
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:github-book/git-tutorial.git
* [new branch] feature-D -> feature-D
Branch feature-D set up to track remote branch feature-D from origin.
复制代码
git clone
获取远程仓库$ git clone git@github.com:github-book/git-tutorial.git
Cloning into 'git-tutorial'...
remote: Counting objects: 20, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 20 (delta 3), reused 20 (delta 3)
Receiving objects: 100% (20/20), done.
Resolving deltas: 100% (3/3), done.
$ cd git-tutorial
复制代码
们用 git branch -a
命令查看当前分支的相关信息。
将 feature-D 分支获取至本地仓库。
$ git checkout -b feature-D origin/feature-D
Branch feature-D set up to track remote branch feature-D from origin.
Switched to a new branch 'feature-D'
复制代码
git pull
获取最新的远程仓库分支 使用 git pull
命令,将本地的 feature-D 分支更新到最新状态$ git pull origin feature-D
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 1), reused 3 (delta 1)
Unpacking objects: 100% (3/3), done.
From github.com:github-book/git-tutorial
* branch feature-D -> FETCH_HEAD
First, rewinding head to replay your work on top of it...
Fast-forwarded feature-D to ed9721e686f8c588e55ec6b8071b669f411486b8.
复制代码
若是两人同时修改了同一部分的源代码,push 时就很容易发生冲 突。因此多名开发者在同一个分支中进行做业时,为减小冲突状况的发 生,建议更频繁地进行 push 和 pull 操做。
Pull Request 是本身修改源代 码后,请求对方仓库采纳该修改时采起的一种行为。Pull Request 概念图以下:
Fork 或 clone 来的仓库,一旦放置无论就会离最新的源代码愈来愈远。 一般来讲 clone 来的仓库实际上与原仓库并无任何关系。因此咱们须要将原仓库设置为远程仓库,从该仓库获取(fetch)数据与本地仓库进行合并(merge),让本地仓库的源代码保持最新状态。以下图:
$ git clone git@github.com:hirocastest/Spoon-Knife.git
Cloning into 'Spoon-Knife'...
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 24 (delta 7), reused 17 (delta 1)
Receiving objects: 100% (24/24), 74.36 KiB | 68 KiB/s, done.
Resolving deltas: 100% (7/7), done.
$ cd Spoon-Knife
复制代码
$ git remote add upstream git://github.com/octocat/Spoon-Knife.git
复制代码
从此,咱们的这个仓库将以 upstream 做为原仓库的标识符。这个环境下只须要设定一次。
第一步:从远程仓库实际获取(fetch)最新源代码。 第二步:与本身仓库的分支进行合并。要让仓库维持最新状态,
$ git fetch upstream
From git://github.com/octocat/Spoon-Knife
* [new branch] master -> upstream/master
$ git merge upstream/master
Already up-to-date.
复制代码
!--注意--注意--:git fetch 和git pull 的差异
git fetch
至关因而从远程获取最新到本地,不会自动merge,以下指令:git fetch orgin master //将远程仓库的master分支下载到本地当前branch中
git log -p master ..origin/master //比较本地的master分支和origin/master分支的差异
git merge origin/master //进行合并
复制代码
也能够用如下指令:
git fetch origin master:tmp //从远程仓库master分支获取最新,在本地创建tmp分支
git diff tmp //將當前分支和tmp進行對比
git merge tmp //合并tmp分支到当前分支
复制代码
git pull
至关因而从远程获取最新版本并merge到本地git pull origin master
git pull 至关于从远程获取最新版本并merge到本地
补充:
fetch
的时候本地的master[ID=1]
没有变化,若是与远程仓关联的那个版本号master[ID=2]
被更新了。咱们接下来就是在本地合并这两个版本号的代码master[ID=3]
,此时会有三个版本号,可查可用。git pull
的会将本地的代码更新至远程仓库里面最新的代码版本。至于两个版本号,代码有丢失风险。总结:如下借鉴文献
不要用git pull,用git fetch和git merge代替它。 git pull的问题是它把过程的细节都隐藏了起来,以致于你不用去了解git中各类类型分支的区别和使用方法。固然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方。看起来git pull的用法会使你吃惊,简单看一下git的使用文档应该就能说服你。 将下载(fetch)和合并(merge)放到一个命令里的另一个弊端是,你的本地工做目录在未经确认的状况下就会被远程分支更新。固然,除非你关闭全部的安全选项,不然git pull在你本地工做目录还不至于形成不可挽回的损失,但不少时候咱们宁愿作的慢一些,也不肯意返工重来。
点击Pull Request 查看详细内容。
Merge pull request
按钮,Pull Request 的内容便会自动合并至仓库。
注意:
在采纳以前,请尽可能将接收到的 Pull Request 拿到本地开发环境中进行检查,确认是否可以正常运行以及代码是否安全。
3.一、 采纳 Pull Request 前的准备
下面咱们来说解收到 Pull Request 后在本地开发环境中进行实际检查的流程。在本示例中,Pull Request 接收方的用户名为ituring,发送方的用户名为“PR 发送者”。
$ git clone git@github.com:ituring/first-pr.git
Cloning into 'first-pr'...
remote: Counting objects: 34, done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 34 (delta 10), reused 15 (delta 4)
Receiving objects: 100% (34/34), 89.48 KiB | 112 KiB/s, done.
Resolving deltas: 100% (10/10), done.
$ cd first-pr
复制代码
(2)获取发送方的远程仓库 将 Pull Request 发送方的仓库设置为本地仓库的远程仓库,获取发送方仓库的数据。
$ git remote add PR发送者 git@github.com:PR发送者/first-pr.git
$ git fetch PR发送者
省略
From github.com:PR发送者/first-pr
* [new branch] gh-pages -> PR发送者/gh-pages
* [new branch] master -> PR发送者/master
* [new branch] work -> PR发送者/work
复制代码
注意:fetch
以后,只是获取了远程仓库的数据,这些数据还没有反映在任何一个分支中。须要建立一个分支,用来显示的承载fetch
到的代码
(3)先从接收者新建一个分支,和发送pull request的分支合并,测试功能。 从接收者的本地仓库中,新建一个分支后,用这个分支和fetch到发送pull reuqest的远程仓库数据合并
$ git checkout -b pr1
Switched to a new branch 'pr1'
$ git merge PR发送者/work
Updating cc62779..243f28d
Fast-forward
index.html | 2 ++
1 file changed, 2 insertions(+)
复制代码
(4)采纳 Pull Request
完成上述内容后,若是 Pull Request 的内容没有问题,大可打开浏览器找出相应的 Pull Request 页面,点击 Merge pull request 按钮,随后Pull Request 的内容会自动合并至仓库。 不过,因为咱们已经在本地构筑了相同的环境,只要经过 CLI 进行合并操做再 push 至 GitHub,Pull Request 中就会反映出 Pull Request 被采纳后的状态。
更新中。。。