GitHub使用基本流程

来源:http://www.cnblogs.com/xiangcl/archive/2017/05/20/6882623.html
-Advertisement-
Play Games

初始化git 配置git 使用Git的第一件事就是設置你的名字和email,這些就是你在提交commit時的簽名,每次提交記錄里都會包含這些信息。使用git config命令進行配置 執行了上面的命令後,會在家目錄( )下建立一個叫 的文件(該文件為隱藏文件,需要使用 查看到). 內容一般像下麵這樣 ...


初始化git

配置git

  • 使用Git的第一件事就是設置你的名字和email,這些就是你在提交commit時的簽名,每次提交記錄里都會包含這些信息。使用git config命令進行配置
[root@bogon ~]# git config --global user.name "xiangcl"
[root@bogon ~]# git config --global user.email "[email protected]"
  • 執行了上面的命令後,會在家目錄(/root)下建立一個叫.gitconfig的文件(該文件為隱藏文件,需要使用ls -al查看到). 內容一般像下麵這樣,可以使用vim或cat查看文件內容:
[root@bogon ~]# cat .gitconfig
[user]
name = xiangcl
email = [email protected]
  • 上面的配置文件就是Git全局配置的文件,一般配置方法是git config --global <配置名稱> <配置的值>

  • 如果你想使項目里的某個值與前面的全局設置有區別(例如把私人郵箱地址改為工作郵箱),你可以在項目中使用git config命令不帶--global選項來設置. 這會在你當前的項目目錄下創建.git/config,從而使用針對當前項目的配置。

配置GitHub

註冊GitHub

後續有時間另寫一篇教程,這裡不在贅述...

配置Git

  • 在本地創建ssh key:
ubuntu@VM-0-26-ubuntu:~$ sudo ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Ia1lou/M0ZNnLW6Dly9+Ws1kX89Uq5eF9wUBgFGChDA [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|  E. o..o+o....  |
|   .. ....     . |
|      o =     . .|
|     . * .     oo|
|    . . S     +.*|
|     . . . . =.=B|
|      o +.+.o.oo=|
|     + ..=*o. .  |
|      +  ++*.    |
+----[SHA256]-----+

顯示如上則表示創建成功。註意,上面命令中的郵箱"[email protected]"請更換為自己的郵箱,後面密鑰設置密碼,這裡我無需設置,直接一路回車就行。

  • 設置成功會在 /root/ 下生成一個.ssh文件,因為要進入 /root 目錄,所以需要轉為root身份:
ubuntu@VM-0-26-ubuntu:~$ sudo -s
root@VM-0-26-ubuntu:~# cd /root
root@VM-0-26-ubuntu:/root# cd .ssh/
root@VM-0-26-ubuntu:/root/.ssh# ls -l
total 8
-rw------- 1 root root 1675 May 18 16:14 id_rsa
-rw-r--r-- 1 root root  399 May 18 16:14 id_rsa.pub
  • 打開id_rsa.pub,複製裡面的key
  • 然後粘貼至GitHub,Settings/SSH and GPG keys/New SSH key
  • 使用 ssh -T [email protected] 驗證是否安裝成功
root@VM-0-26-ubuntu:~# ssh -T [email protected]
The authenticity of host 'github.com (192.30.253.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts.
Hi xiangcl! You've successfully authenticated, but GitHub does not provide shell access.

按提示輸入yes,看到You've successfully authenticated, but GitHub does not provide shell access則表示連接成功。

獲取一個Git倉庫

既然我們現在把一切都設置好了,那麼我們需要一個Git倉庫。有兩種方法可以得到它:一種是從已有的Git倉庫中clone (克隆,複製);還有一種是新建一個倉庫,把未進行版本控制的文件進行版本控制。

Clone一個倉庫

  • 為了得一個項目的拷貝(copy),我們需要知道這個項目倉庫的地址(Git URL). Git能在許多協議下使用,所以Git URL可能以ssh://, http(s)://, git://. 有些倉庫可以通過不只一種協議來訪問。

  • 這裡在我的GitHub上提供的一個名字為GitTest的倉庫供大家測試的公有倉庫,這個倉庫可以使用下麵方式進行clone:

[root@bogon ~]# git clone https://github.com/xiangcl/GitTest.git
正克隆到 'GitTest'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), done.
  • clone操作完成後,會發現當前目錄下多了一個GitTest的文件夾,這個文件夾里的內容就是我們剛剛clone下來的代碼。由於當前GitTest僅是測試項目,裡面僅有README.md和LICENSE文件。
[root@bogon ~]# cd GitTest/
[root@bogon GitTest]# ls
LICENSE  README.md

初始化一個新倉庫

可以對一個已存在的文件夾用下麵的命令讓它置於Git的版本控制管理之下。

  • 創建代碼目錄project:
[root@bogon gitproject]# cd ~

[root@bogon ~]# mkdir project
  • 進入到代碼目錄,創建並初始化Git倉庫:
[root@bogon ~]# cd project/

[root@bogon project]# git init

初始化空的 Git 版本庫於 /root/project/.git/

通過ls -la命令會發現project目錄下會有一個名叫.git的目錄被創建,這意味著一個倉庫被初始化了。可以進入到.git目錄查看下有哪些內容。

Git工作流程

git基本工作流程如下:

  1. 創建或修改文件
  2. 使用git add命令添加新創建或修改的文件到本地的緩存區(Index)
  3. 使用git commit命令提交到本地代碼庫
  4. (可選,有的時候並沒有可以同步的遠端代碼庫)使用git push命令將本地代碼庫同步到遠端代碼庫
  • 進入我們剛纔建立的project目錄,分別創建文件file1,file2,file3
[root@bogon ~]# cd project/

[root@bogon project]# touch file1 file2 file3
  • 修改文件,可以使用vim編輯內容,也可以直接echo添加測試內容。
[root@bogon project]# echo "test" >> file1

[root@bogon project]# echo "test" >> file2

[root@bogon project]# echo "test" >> file3
  • 此時可以使用git status命令查看當前git倉庫的狀態:
[root@bogon project]# git status

# 位於分支 master

#

# 初始提交

#

# 未跟蹤的文件:

# (使用 "git add <file>..." 以包含要提交的內容)

#

# file1

# file2

# file3

提交為空,但是存在尚未跟蹤的文件(使用 "git add" 建立跟蹤)

可以發現,有三個文件處於未跟蹤(untracked)狀態,下一步我們就需要用git add命令將他們加入到緩存區(Index)。

  • 使用git add命令將新建的文件添加到:
[root@bogon project]# git add file1 file2 file3
  • 然後再次執行git status就會發現新的變化:
[root@bogon project]# git status

# 位於分支 master

#

# 初始提交

#

# 要提交的變更:

# (使用 "git rm --cached <file>..." 撤出暫存區)

#

# 新文件: file1

# 新文件: file2

# 新文件: file3

#
  • 你現在為commit做好了準備,你可以使用 git diff 命令再加上 --cached 參數,看看緩存區中哪些文件被修改了。
[root@bogon project]# git diff --cached

如果沒有--cached參數,git diff 會顯示當前你所有已做的但沒有加入到索引里的修改。

如果你要做進一步的修改, 那就繼續做, 做完後就把新修改的文件加入到緩存區中。

  • 當所有新建,修改的文件都被添加到了緩存區,我們就要使用git commit提交到本地倉庫:
[root@bogon project]# git commit -m "add 3 files"

[master(根提交) bbb9a52] add 3 files

 3 files changed, 3 insertions(+)

 create mode 100644 file1

 create mode 100644 file2

 create mode 100644 file3

需要使用-m添加本次修改的註釋,完成後就會記錄一個新的項目版本。

  • 除了用git add命令,我們還可以用下麵的命令將所有沒有加到緩存區的修改也一起提交,但-a命令不會添加新建的文件。
$ git commit -a -m "add 3 files"

再次輸入git status查看狀態,會發現當前的代碼庫已經沒有待提交的文件了,緩存區已經被清空。

至此,我們完成了第一次代碼提交,這次提交的代碼中我們創建了三個新文件。需要註意的是如果是修改文件,也需要使用git add命令添加到緩存區才可以提交。如果是刪除文件,則直接使用git rm命令刪除後會自動將已刪除文件的信息添加到緩存區,git commit提交後就會將本地倉庫中的對應文件刪除。

為你的項目添加一個新的遠程倉庫

本地倉庫是創建完成了,現在需要與遠程的倉庫進行鏈接。

[root@bogon project]# git remote
[root@bogon project]# git remote add origin [email protected]:xiangcl/project.git
[root@bogon project]# git remote -v
origin  [email protected]:xiangcl/project.git (fetch)
origin  [email protected]:xiangcl/project.git (push)

推送到遠程倉庫

這個時候如果本地的倉庫連接到了遠程Git伺服器,可以使用下麵的命令將本地倉庫同步到遠端伺服器:(註意,需要與遠程倉庫連接)

[root@bogon project]# git push -u origin master
Warning: Permanently added the RSA host key for IP address '192.30.255.113' to the list of known hosts.
Counting objects: 14, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (14/14), 1.16 KiB | 0 bytes/s, done.
Total 14 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
To [email protected]:xiangcl/project.git
 * [new branch]      master -> master
分支 master 設置為跟蹤來自 origin 的遠程分支 master。

上面使用git push時帶上了-u參數,是將本地的master分支推送到origin主機,同時指定origin為預設主機,後面就可以不加任何參數使用git push了。

從遠端倉庫下載新分支與數據

  • git fetch會訪問遠程倉庫,從中拉取所有你還沒有的數據。 執行完成後,你將會擁有那個遠程倉庫中所有分支的引用,可以隨時合併或查看。
[root@bogon project]# git remote -v
origin  [email protected]:xiangcl/project.git (fetch)
origin  [email protected]:xiangcl/project.git (push)
[root@bogon project]# git fetch origin 
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
來自 github.com:xiangcl/project
   6c3b072..4d38d99  master     -> origin/master

git fetch origin會抓取從你上次克隆以來別人上傳到此遠程倉庫中的所有更新(或是上次 fetch 以來別人提交的更新)。有一點很重要,需要記住,fetch 命令只是將遠端的數據拉到本地倉庫,並不自動合併到當前工作分支,只有當你確實準備好了,才能手工合併。

  • 查看分支

git branch命令的-r選項,可以用來查看遠程分支,-a選項查看所有分支。

[root@bogon project]# git branch -r 
  origin/master

[root@bogon project]# git branch -a
* master
  remotes/origin/master

上面命令表示,本地主機的當前分支是master,遠程分支是origin/master。

  • 取回遠程主機的更新以後,可以在它的基礎上,使用git checkout命令創建一個新的分支。
[root@bogon project]# git checkout -b newBrack origin/master 
分支 newBrack 設置為跟蹤來自 origin 的遠程分支 master。
切換到一個新分支 'newBrack'

上面命令表示,在origin/master的基礎上,創建一個新分支。

  • 此外,也可以使用git merge命令或者git rebase命令,在本地分支上合併遠程分支。
[root@bogon project]# git merge origin/master 
Already up-to-date.

[root@bogon project]# ls
file1  file2  file3  README.md

上面命令表示在當前分支上,合併origin/master。此時使用ls就可以查看到我剛剛在倉庫段創建的README.md文件了

分支與合併

Git的分支可以讓你在主線(master分支)之外進行代碼提交,同時又不會影響代碼庫主線。分支的作用體現在多人協作開發中,比如一個團隊開發軟體,你負責獨立的一個功能需要一個月的時間來完成,你就可以創建一個分支,只把該功能的代碼提交到這個分支,而其他同事仍然可以繼續使用主線開發,你每天的提交不會對他們造成任何影響。當你完成功能後,測試通過再把你的功能分支合併到主線。

分支

  • 一個Git倉庫可以維護很多開發分支。現在我們來創建一個新的叫 experimental的分支:
[root@bogon project]# git branch experimental
  • 運行git branch命令可以查看當前的分支列表,已經目前的開發環境處在哪個分支上:
[root@bogon project]# git branch
  experimental
* master
  • experimental 分支是你剛纔創建的,master分支是Git系統預設創建的主分支。星號標識了你當工作在哪個分支下,輸入git checkout 分支名可以切換到其他分支:
[root@bogon project]# git checkout experimental
切換到分支 'experimental'
  • 切換到experimental分支,切換完成後,先編輯裡面的一個文件,再提交(commit)改動,最後切換回 “master”分支:
[root@bogon project]# echo "update" >> file1 # 修改file1文件
[root@bogon project]# git status # 使用 git status 查看當前狀態
# 位於分支 experimental
# 尚未暫存以備提交的變更:
# (使用 "git add <file>..." 更新要提交的內容)
# (使用 "git checkout -- <file>..." 丟棄工作區的改動)
#
# 修改: file1
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@bogon project]# git add file1 # 添加並提交file1的更改
[root@bogon project]# git commit -m "update file1"
[experimental 3251fbe] update file1
 1 file changed, 1 insertion(+)
[root@bogon project]# cat file1 #查看file1文件的內容
test
update
[root@bogon project]# git checkout master #切換至master分支

切換到分支 'master'

查看下file1中的內容會發現剛纔做的修改已經看不到了。因為剛纔的修改時在experimental分支下,現在切換回了master分支,目錄下的文件都是master分支上的文件了。

  • 現在可以在master分支下再作一些不同的修改:
[root@bogon project]# echo 'update again' >> file2 #修改file2文件

[root@bogon project]# git status #查看當前狀態

# 位於分支 master

# 尚未暫存以備提交的變更:

# (使用 "git add <file>..." 更新要提交的內容)

# (使用 "git checkout -- <file>..." 丟棄工作區的改動)

#

# 修改: file2

#

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

[root@bogon project]# git add file2 #添加並調教file2的修改

[root@bogon project]# git commit -m "update file2 on master"

[master 7f50340] update file2 on master

 1 file changed, 1 insertion(+)

[root@bogon project]# cat file2 #查看file2的修改

test

update again

這時,兩個分支就有了各自不同的修改,分支的內容都已經不同,如何將多個分支進行合併呢?

  • 可以通過下麵的git merge命令來合併experimental到主線分支master:
[root@bogon project]# git checkout master # 切換至master 分支

已經位於 'master'

[root@bogon project]# git merge -m "merge experimental branch" experimental #將 experimental 分支合併至master分區

Merge made by the 'recursive' strategy.

 file1 | 1 +

 1 file changed, 1 insertion(+)

-m參數仍然是需要填寫合併的註釋信息。

由於兩個branch修改了兩個不同的文件,所以合併時不會有衝突,執行上面的命令後合併就完成了。

  • 如果有衝突,比如兩個分支都改了一個文件file3,則合併時會失敗。首先我們在master分支上修改file3文件並提交:
[root@bogon project]# git checkout master # 切換至 master 分區

已經位於 'master'

[root@bogon project]# echo "master:update file3" >> file3 # 修改 file3 文件

[root@bogon project]# git status # 查看當前狀態

# 位於分支 master

# 尚未暫存以備提交的變更:

# (使用 "git add <file>..." 更新要提交的內容)

# (使用 "git checkout -- <file>..." 丟棄工作區的改動)

#

# 修改: file3

#

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

[root@bogon project]# git commit -a -m 'update file3 on master' #提交至master分區

[master 2922456] update file3 on master

 1 file changed, 1 insertion(+)

[root@bogon project]# git status #在次查看狀態

# 位於分支 master

無文件要提交,乾凈的工作區
  • 然後切換到experimental,修改file3並提交:
[root@bogon project]# git checkout experimental # 切換至 experimental 分支
切換到分支 'experimental'
[root@bogon project]# echo "experimental: update file3" >> file3 # 修改 file3 文本
[root@bogon project]# git commit -a -m 'update file3 on experimental' # 提交至experimental 分支
[experimental e511488] update file3 on experimental
 1 file changed, 1 insertion(+)
  • 切換到master進行合併:
[root@bogon project]# git checkout master # 切換至 master 分支
切換到分支 'master'
[root@bogon project]# git merge experimental # 合併分支
自動合併 file3
衝突(內容):合併衝突於 file3
自動合併失敗,修正衝突然後提交修正的結果。
  • 合併失敗後先用git status查看狀態,會發現file3顯示為both modified,查看file3內容會發現:
[root@bogon project]# git status #查看狀態
# 位於分支 master
# 您有尚未合併的路徑。
# (解決衝突並運行 "git commit")
#
# 未合併的路徑:
# (使用 "git add <file>..." 標記解決方案)
#
# 雙方修改: file3
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@bogon project]# cat file3 # 查看產生衝突的文件
test
<<<<<<< HEAD
master:update file3
=======
experimental: update file3
>>>>>>> experimental

上面的內容也可以使用git diff查看,先前已經提到git diff不加參數可以顯示未提交到緩存區中的修改內容。

  • 可以看到衝突的內容都被添加到了file3中,我們使用vim編輯這個文件,去掉git自動產生標誌衝突的<<<<<<等符號後,根據需要只保留我們需要的內容後保存,然後使用git add file3和git commit命令來提交合併後的file3內容,這個過程是手動解決衝突的流程。
[root@bogon project]# vim file3 # 使用 vim 打開文件修改

[root@bogon project]# git status #查看狀態

# 位於分支 master

# 您有尚未合併的路徑。

# (解決衝突並運行 "git commit")

#

# 未合併的路徑:

# (使用 "git add <file>..." 標記解決方案)

#

# 雙方修改: file3

#

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

[root@bogon project]# git add file3 # 將文件加入緩存

[root@bogon project]# git status # 再次查看狀態

# 位於分支 master

# 所有衝突已解決但您仍處於合併中。

# (使用 "git commit" 結束合併)

#

# 要提交的變更:

#

# 修改: file3

#

[root@bogon project]# git commit -m 'merge file3' # 提交修改的文件

[master 6b63f36] merge file3
  • 當我們完成合併後,不再需要experimental時,可以使用下麵的命令刪除:
[root@bogon project]# git branch -d experimental
已刪除分支 experimental(曾為 e511488)。

git branch -d只能刪除那些已經被當前分支的合併的分支. 如果你要強制刪除某個分支的話就用git branch –D

撤銷一個合併

  • 如果你覺得你合併後的狀態是一團亂麻,想把當前的修改都放棄,你可以用下麵的命令回到合併之前的狀態:
[root@bogon project]# git reset --hard HEAD^
HEAD 現在位於 2922456 update file3 on master
[root@bogon project]# cat file3
test
master:update file3

推送至遠程倉庫

  • 在本機完成改動後就可以提交到遠程倉庫了
git push origin master

可以把 master 換成你想要推送的任何分支。

  • 如果你還沒有克隆現有倉庫,並欲將你的倉庫連接到某個遠程伺服器,你可以使用如下命令添加:
git remote add origin <server>

如此你就能夠將你的改動推送到所添加的伺服器上去了。

更新與合併

  • 要更新你的本地倉庫至最新改動,執行:
git pull

以在你的工作目錄中 獲取(fetch) 並 合併(merge) 遠端的改動。

  • 要合併其他分支到你的當前分支(例如 master),執行:
git merge <branch>
  • 在這兩種情況下,git 都會嘗試去自動合併改動。遺憾的是,這可能並非每次都成功,並可能出現衝突(conflicts)。 這時候就需要你修改這些文件來手動合併這些衝突(conflicts)。改完之後,你需要執行如下命令以將它們標記為合併成功:
git add <filename>
  • 在合併改動之前,你可以使用如下命令預覽差異:
git diff <source_branch> <target_branch>

參考:Git Pro阮一峰的網路日誌

歡迎訪問我的個人Blog:xiangcl.com


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是資料庫? 電腦處理和存儲的一切信息都是數據。 電腦系統中一種用於存儲數據的程式。 一種:電腦系統中有很多種能夠存取數據的程式。 他們各有特長和長處,有自己的適用範圍。 存取:能夠保存數據避免丟失。 能夠按照需求找到符合條件的數據。 為什麼要使用資料庫? 較大數據量,事務控制,網路訪問,持 ...
  • Linux基礎 學習目標 1、瞭解Linux的簡介與安裝 2、掌握Linux常用的命令 3、掌握Linux系統上JDK、Mysql、Tomcat的安裝 學習目標 1、瞭解Linux的簡介與安裝 2、掌握Linux常用的命令 3、掌握Linux系統上JDK、Mysql、Tomcat的安裝 一、Linu ...
  • 背景最近在複習Linux,需要一個能隨時用SSH連接的Linux系統,剛好實驗室有一臺安裝了Ubuntu的主機。 查閱網上資料,發現有ZeroTier 這種能夠創建虛擬區域網的開源的軟體,於是就有了這篇簡易使用筆記。安裝直接到 ZeroTirer官網 下載對應版本的ZeroTier。 Windows... ...
  • 我的outlook版本是2007 SP3,英文版。一直有搜索不到郵件的問題,例如在搜索框輸入發件人的名字,或者郵件中的詞語,就是搜索不到郵件,即使那封郵件確實存在。 在網上搜索,Microsoft 的英文論壇提供了一個方法,英文論壇鏈接 Tools --> option --> serch opti ...
  • 首先需要知道的是linux 版本的shadowsocks包含了客戶端和服務端,因此在linux下安裝了shadowsocks就是安裝了客戶端和服務端,因此下文只需介紹安裝shadowsocks客戶端 1.安裝shadowsocks (主機是ubuntu 14.04) 1.1先安裝pip sudo a ...
  • 1.獲取內網地址(私有地址) ifconfig -a 2.獲取外網地址(公網地址) curl members.3322.org/dyndns/getip ...
  • U盤安裝CentOS 7提示 “Warning: /dev/root does not exist, could not boot” 解決辦法 ...
  • xargs命令是把接收到的數據重新格式化,再將其作為參數提供給其他命令,下麵介紹xargs命令的各種使用技巧 一、將多行輸入轉換成單行輸入: 將單行輸入轉換成多行輸出: 自定義定界符進行轉換(預設的定界符是空格): 二、在腳本中運用: 在上面的例子中,我們把參數源都放入args.txt文件,但是除了 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...